// 默认num = 1，num代表展开的级数
// Number数据类型中 NaN和0都会被转换成false
Array.prototype._flat = function (num = 1) {
  if (!Array.isArray(this)) {
    console.error("this is not an Array");
    return;
  }
  let result = [];
  let n = num;
  for (let item of this) {
    if (Array.isArray(item)) {
      n--;
      if (n < 0) {
        result.push(item);
      } else {
        // 只要是数组就 递归 并 压入结果数组
        result.push(...item._flat(n));
      }
    } else {
      // 不是数组直接压入res中
      result.push(item);
    }
    n = num;
  }
  return result;
};
const arr = [1, [1, 2], [1, 2, 3]];
let res = arr.flat(); // [1, 1, 2, 1, 2, 3]
console.log(res);
// function flat(arr) {
//   let result = [];
//   for (const item of arr) {
//     item instanceof Array ? result.push(...flat(item)) : result.push(item);
//   }
//   return result;
// }
// let arr = [1, 2];
// console.log(arr.concat([3, 4, [5, 6]])); //[ 1, 2, 3, 4, [ 5, 6 ] ]
// let arr1 = [1, 2];
// arr1.push([2, 3, 4]);
// console.log(arr1); // [1,2,[2,3,4]];
